Advanced Host Controller Interface

The Advanced Host Controller Interface (AHCI) is a technical standard defined by Intel that specifies the operation of Serial ATA (SATA) host bus adapters in a non-implementation-specific manner.

The specification describes a system memory structure for computer hardware vendors to exchange data between host system memory and attached storage devices. AHCI gives software developers and hardware designers a standard method for detecting, configuring, and programming SATA/AHCI adapters. AHCI is separate from the SATA 3Gb/s standard, although it exposes SATA's advanced capabilities (such as hot swapping and native command queuing) such that host systems can utilize them.

As of October 2010, the current version of the specification is v. 1.3.

Contents

Operating modes

Many SATA controllers offer selectable modes of operation: legacy Parallel ATA emulation, standard AHCI mode, or vendor-specific RAID (which generally enables AHCI in order to take advantage of its capabilities). Intel recommends choosing RAID mode on their motherboards (which also enables AHCI) rather than AHCI/SATA mode for maximum flexibility.[1] Legacy mode is a software backward-compatibility mechanism intended to allow the SATA controller to run in legacy operating systems which are not SATA-aware or where a driver does not exist to make the operating system SATA-aware.

Operating system support

AHCI is supported out of the box on Windows Vista and newer versions of Windows, Linux-based operating systems (from kernel 2.6.19 onwards), OpenBSD (version 4.1 onwards), NetBSD, FreeBSD, OS X, and Solaris 10 (8/07 and onwards).[2] DragonFlyBSD based its AHCI implementation on OpenBSD's and added extended features such as port multiplier support. Older versions of operating systems require hardware-specific drivers in order to support AHCI. Windows XP does not provide support out of the box.

Some operating systems, notably Windows Vista and Windows 7, do not configure themselves to load the AHCI driver upon boot if the drive controller was not in AHCI mode at the time of installation. This can cause failure to boot with an error message if the SATA controller is later switched to AHCI mode. For this reason, Intel recommends changing the drive controller to AHCI or RAID before installing an operating system.[1]

On Windows Vista and Windows 7, this can be fixed by setting non-AHCI mode in the BIOS then booting and changing the registry, then changing the BIOS setting to AHCI.[3]
A similar problem can occur on Linux systems if the AHCI driver is built as a module, rather than included in the kernel, as it may not be loaded into the initrd (initial RAM disk) created when in legacy mode; the workaround is to build a new initrd containing the AHCI module.[4][5]

References

External links